########################################################################
##
##  Purpose: This script produces Table 1 from the manuscript
##  Author: james.h.bisbee@vanderbilt.edu
##  Date: 05/18/2024
##
##  Input Files:
##    - ./data/for_replication.rds
##  Output Files:
##    - ./output/Tables/tab_1.tex
##
########################################################################
rm(list = ls())
gc()

require(changepoint)
require(tidyverse)
require(ggridges)
require(fixest)

# Compute details
Sys.info()
# sysname        release        version       nodename 
# "Windows"       "10 x64"  "build 22631"   "AS-GR3RGY3" 
# machine          login           user effective_user 
# "x86-64"     "bisbeejh"     "bisbeejh"     "bisbeejh"

ram_size = system("wmic MemoryChip get Capacity", intern = TRUE)[-1]
model_name = system("wmic cpu get name", intern = TRUE)[2] # nocov
vendor_id = system("wmic cpu get manufacturer", intern = TRUE)[2] # nocov
  
print(list(ram = stringr::str_squish(ram_size)[1],
             vendor_id = stringr::str_squish(vendor_id),
             model_name = stringr::str_squish(model_name),
             no_of_cores = parallel::detectCores()))

# $ram
# [1] "17179869184"
# 
# $vendor_id
# [1] "GenuineIntel"
# 
# $model_name
# [1] "13th Gen Intel(R) Core(TM) i9-13900H"
# 
# $no_of_cores
# [1] 20

# Package details
sessionInfo()

# attached base packages:
# [1] stats     graphics  grDevices utils     datasets 
# [6] methods   base     
# 
# other attached packages:
#  [1] fixest_0.11.1     ggridges_0.5.4    lubridate_1.9.2  
#  [4] forcats_1.0.0     stringr_1.5.0     dplyr_1.1.2      
#  [7] purrr_1.0.1       readr_2.1.4       tidyr_1.3.0      
# [10] tibble_3.2.1      ggplot2_3.4.4     tidyverse_2.0.0  
# [13] changepoint_2.2.4 zoo_1.8-12       
# 
# loaded via a namespace (and not attached):
#  [1] gtable_0.3.3        compiler_4.3.3     
#  [3] Rcpp_1.0.11         tidyselect_1.2.0   
#  [5] scales_1.3.0        lattice_0.22-5     
#  [7] R6_2.5.1            generics_0.1.3     
#  [9] Formula_1.2-5       munsell_0.5.0      
# [11] pillar_1.9.0        tzdb_0.4.0         
# [13] rlang_1.1.1         utf8_1.2.3         
# [15] stringi_1.7.12      timechange_0.2.0   
# [17] cli_3.6.1           withr_2.5.0        
# [19] magrittr_2.0.3      grid_4.3.3         
# [21] rstudioapi_0.15.0   hms_1.1.3          
# [23] sandwich_3.0-2      nlme_3.1-164       
# [25] lifecycle_1.0.3     vctrs_0.6.3        
# [27] glue_1.6.2          numDeriv_2016.8-1.1
# [29] fansi_1.0.4         colorspace_2.1-0   
# [31] dreamerr_1.2.3      tools_4.3.3        
# [33] pkgconfig_2.0.3    


toanal <- read_rds('./data/for_replication.rds')

res <- list()
for(t in c('Original','Retweet','Reply','Quote')) {
  if(is.na(t)) { next }
  res[[t]] <- feols(log(nTweets+1) ~ verified*post + poly(trend,2) | sn,
                    toanal %>%
                      filter(created_at > as.Date('2022-10-19')) %>%
                      filter(type == t) %>%
                      mutate(post = created_at > as.Date('2022-11-19'),
                             trend = as.numeric(created_at) - min(as.numeric(created_at))))
}

dict <- c(postTRUE = 'Post 11/19',
          verifiedTRUE = 'Verified',
          sn = 'Account')

etable(res,drop = 'trend',
       dict = dict,extralines = list('Quadratic Time Trends' = c('Yes','Yes','Yes','Yes')),
       headers=list("Original Tweets" = 1,"Retweets" = 1,'Replies' = 1,'Quotes' = 1),
       depvar = F,digits = 3,digits.stats = 3,file = './output/Tables/tab_1.tex',replace = T)


# EOF